package com.rxmvp.notifycationdemo;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final int NOTIFICATION_ID = 1000; //通知独一无二的id，用于之后的更新和删除等操作

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void showNotification(View view) {

        //打开一个activity
        Intent activityIntent = new Intent(this, NotifyRegularActivity.class);
        activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        activityIntent.putExtra("notification", "我是一个独立的界面"); //可以传递数据

        PendingIntent pendingIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(),
                activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        //打开一个service
        Intent serviceIntent  = new Intent(this, MyService.class);
        serviceIntent.putExtra("notification", "通知发来的数据"); //传递交互数据
//        serviceIntent.setAction("com.huang.notification.service.delete1");
        serviceIntent.setAction("com.huang.notification.service.delete2"); //可以通过action的不同来决定在service中执行不同的操作。

        PendingIntent service = PendingIntent.getService(this, (int) System.currentTimeMillis(),
                serviceIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        //打开一个广播
        Intent receiverIntent = new Intent(this, MyReceiver.class);
        receiverIntent.putExtra("notification", "通知发来的数据"); //传递交互数据
//        receiverIntent.setAction("com.huang.notification.receiver.delete1");
        receiverIntent.setAction("com.huang.notification.receiver.delete2");  //可以通过action的不同来决定在receiver中执行不同的操作。

        PendingIntent receiver = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(),
                receiverIntent, PendingIntent.FLAG_UPDATE_CURRENT);


        // Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.cat);
        // Uri uri = Uri.parse("file:///mnt/sdcard/cat.mp3");
        // notifyBuilder.setSound(uri);  //自定义通知铃声

        // Notification.DEFAULT_ALL：铃声、闪光、震动均系统默认。
        // Notification.DEFAULT_SOUND：系统默认铃声。
        // Notification.DEFAULT_VIBRATE：系统默认震动。
        // Notification.DEFAULT_LIGHTS：系统默认闪光。
        // notifyBuilder.setDefaults(Notification.DEFAULT_ALL);

        Notification notification = new NotificationCompat.Builder(this)
                .setContentTitle("这是title")
                .setContentText("这是内容")
//                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher)) //设置无效
                //设置左边的小图标
                .setSmallIcon(R.mipmap.ic_launcher)
                //设置右下角的数字（一般用于显示通知的个数，例如收到的邮件数量）
                .setNumber(10)
                //设置是否显示时间，默认为TRUE
                .setShowWhen(true)
                //设置显示当前时间
                .setWhen(System.currentTimeMillis())
                //设置通知可以点击删除，注意：需要设置一个ContentIntent才会生效
                .setAutoCancel(true)
                //设置在状态栏
                .setTicker("闪现")
                //设置点击时跳转的intent
                .setContentIntent(pendingIntent)
                //设置铃声、闪光、震动均系统默认。
                .setDefaults(Notification.DEFAULT_ALL)
                //设置通知优先级为最大，始终显示在最顶部(只在4.1以上的系统才会生效)
                .setPriority(Notification.PRIORITY_MAX)
                //设置通知可以滑动删除（默认为TRUE）
                .setOngoing(false)
                //当通知滑动删除时，跳转到指定的intent，可以是activity、broadcast receiver和service
                .setDeleteIntent(receiver)
                .build();

        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(NOTIFICATION_ID, notification);
    }


    public void showBigCustomViewNotification(View view) {
        Toast.makeText(this, "暂未实现", Toast.LENGTH_SHORT).show();
    }
}
